\hypertarget{class_abstract_syntax_tree}{\section{Abstract\+Syntax\+Tree Class Reference}
\label{class_abstract_syntax_tree}\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
}


Abstract Syntax Tree (A\+S\+T)  




{\ttfamily \#include $<$Abstract\+Syntax\+Tree.\+h$>$}

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_abstract_syntax_tree_aaa773a72ffb1cc50d5baca48a0c0f261}{Abstract\+Syntax\+Tree} ()
\begin{DoxyCompactList}\small\item\em Default \hyperlink{class_abstract_syntax_tree}{Abstract\+Syntax\+Tree} constructor. \end{DoxyCompactList}\item 
\hyperlink{class_abstract_syntax_tree_aa37581f2be481fa661e8be48c2afd422}{Abstract\+Syntax\+Tree} (\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} $\ast$\hyperlink{class_abstract_syntax_tree_ad64a53c84906784fcc2b46898453e960}{ast})
\begin{DoxyCompactList}\small\item\em \hyperlink{class_abstract_syntax_tree}{Abstract\+Syntax\+Tree} constructor. \end{DoxyCompactList}\item 
\hyperlink{class_abstract_syntax_tree_ab25d4e2bc841f6c9a43cc7d9580a8e5d}{$\sim$\+Abstract\+Syntax\+Tree} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{class_abstract_syntax_tree}{Abstract\+Syntax\+Tree} destructor. \end{DoxyCompactList}\item 
void \hyperlink{class_abstract_syntax_tree_a872df0d6908377841710a963935cadfe}{Print\+A\+S\+T} ()
\begin{DoxyCompactList}\small\item\em Print on console the A\+S\+T structure. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} $\ast$ \hyperlink{class_abstract_syntax_tree_ad64a53c84906784fcc2b46898453e960}{ast}
\begin{DoxyCompactList}\small\item\em Root node of the A\+S\+T. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{class_abstract_syntax_tree_a9d7dc6c01a189926d6e9eac6004c7731}{\+\_\+destroy\+A\+S\+T} (\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} $\ast$node)
\begin{DoxyCompactList}\small\item\em Recursively destroy an A\+S\+T structure. \end{DoxyCompactList}\item 
void \hyperlink{class_abstract_syntax_tree_a0677cd13b9b3ae5531e5a761b91ee761}{\+\_\+print\+A\+S\+T} (\hyperlink{class_a_s_t_node}{A\+S\+T\+Node} $\ast$node, int num\+Tabs)
\begin{DoxyCompactList}\small\item\em Recursively print on console an A\+S\+T structure. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Abstract Syntax Tree (A\+S\+T) 

An A\+S\+T is a tree representation of the abstract syntactic structure of source code written in a programming language. \begin{DoxyAuthor}{Author}
Caio Arce Nishibe (\href{mailto:caionishibe@gmail.com}{\tt caionishibe@gmail.\+com}) 
\end{DoxyAuthor}
\begin{DoxyDate}{Date}
August, 2014 
\end{DoxyDate}


\subsection{Constructor \& Destructor Documentation}
\hypertarget{class_abstract_syntax_tree_aaa773a72ffb1cc50d5baca48a0c0f261}{\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}!Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}!Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
\subsubsection[{Abstract\+Syntax\+Tree}]{\setlength{\rightskip}{0pt plus 5cm}Abstract\+Syntax\+Tree\+::\+Abstract\+Syntax\+Tree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{class_abstract_syntax_tree_aaa773a72ffb1cc50d5baca48a0c0f261}


Default \hyperlink{class_abstract_syntax_tree}{Abstract\+Syntax\+Tree} constructor. 

Initialize A\+S\+T root node as {\ttfamily N\+U\+L\+L}. \hypertarget{class_abstract_syntax_tree_aa37581f2be481fa661e8be48c2afd422}{\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}!Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}!Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
\subsubsection[{Abstract\+Syntax\+Tree}]{\setlength{\rightskip}{0pt plus 5cm}Abstract\+Syntax\+Tree\+::\+Abstract\+Syntax\+Tree (
\begin{DoxyParamCaption}
\item[{{\bf A\+S\+T\+Node} $\ast$}]{ast}
\end{DoxyParamCaption}
)}}\label{class_abstract_syntax_tree_aa37581f2be481fa661e8be48c2afd422}


\hyperlink{class_abstract_syntax_tree}{Abstract\+Syntax\+Tree} constructor. 

Initialize A\+S\+T root to a given node. 
\begin{DoxyParams}{Parameters}
{\em ast} & A\+S\+T root node \\
\hline
\end{DoxyParams}
\hypertarget{class_abstract_syntax_tree_ab25d4e2bc841f6c9a43cc7d9580a8e5d}{\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}!````~Abstract\+Syntax\+Tree@{$\sim$\+Abstract\+Syntax\+Tree}}
\index{````~Abstract\+Syntax\+Tree@{$\sim$\+Abstract\+Syntax\+Tree}!Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
\subsubsection[{$\sim$\+Abstract\+Syntax\+Tree}]{\setlength{\rightskip}{0pt plus 5cm}Abstract\+Syntax\+Tree\+::$\sim$\+Abstract\+Syntax\+Tree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{class_abstract_syntax_tree_ab25d4e2bc841f6c9a43cc7d9580a8e5d}


\hyperlink{class_abstract_syntax_tree}{Abstract\+Syntax\+Tree} destructor. 

Delete A\+S\+T structure recursively starting from the root node. 

\subsection{Member Function Documentation}
\hypertarget{class_abstract_syntax_tree_a9d7dc6c01a189926d6e9eac6004c7731}{\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}!\+\_\+destroy\+A\+S\+T@{\+\_\+destroy\+A\+S\+T}}
\index{\+\_\+destroy\+A\+S\+T@{\+\_\+destroy\+A\+S\+T}!Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
\subsubsection[{\+\_\+destroy\+A\+S\+T}]{\setlength{\rightskip}{0pt plus 5cm}void Abstract\+Syntax\+Tree\+::\+\_\+destroy\+A\+S\+T (
\begin{DoxyParamCaption}
\item[{{\bf A\+S\+T\+Node} $\ast$}]{node}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{class_abstract_syntax_tree_a9d7dc6c01a189926d6e9eac6004c7731}


Recursively destroy an A\+S\+T structure. 


\begin{DoxyParams}{Parameters}
{\em node} & A\+S\+T node. \\
\hline
\end{DoxyParams}
\hypertarget{class_abstract_syntax_tree_a0677cd13b9b3ae5531e5a761b91ee761}{\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}!\+\_\+print\+A\+S\+T@{\+\_\+print\+A\+S\+T}}
\index{\+\_\+print\+A\+S\+T@{\+\_\+print\+A\+S\+T}!Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
\subsubsection[{\+\_\+print\+A\+S\+T}]{\setlength{\rightskip}{0pt plus 5cm}void Abstract\+Syntax\+Tree\+::\+\_\+print\+A\+S\+T (
\begin{DoxyParamCaption}
\item[{{\bf A\+S\+T\+Node} $\ast$}]{node, }
\item[{int}]{num\+Tabs}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{class_abstract_syntax_tree_a0677cd13b9b3ae5531e5a761b91ee761}


Recursively print on console an A\+S\+T structure. 


\begin{DoxyParams}{Parameters}
{\em node} & A\+S\+T node. \\
\hline
{\em num\+Tabs} & number of tabulations in this level. \\
\hline
\end{DoxyParams}
\hypertarget{class_abstract_syntax_tree_a872df0d6908377841710a963935cadfe}{\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}!Print\+A\+S\+T@{Print\+A\+S\+T}}
\index{Print\+A\+S\+T@{Print\+A\+S\+T}!Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
\subsubsection[{Print\+A\+S\+T}]{\setlength{\rightskip}{0pt plus 5cm}void Abstract\+Syntax\+Tree\+::\+Print\+A\+S\+T (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{class_abstract_syntax_tree_a872df0d6908377841710a963935cadfe}


Print on console the A\+S\+T structure. 



\subsection{Member Data Documentation}
\hypertarget{class_abstract_syntax_tree_ad64a53c84906784fcc2b46898453e960}{\index{Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}!ast@{ast}}
\index{ast@{ast}!Abstract\+Syntax\+Tree@{Abstract\+Syntax\+Tree}}
\subsubsection[{ast}]{\setlength{\rightskip}{0pt plus 5cm}{\bf A\+S\+T\+Node}$\ast$ Abstract\+Syntax\+Tree\+::ast}}\label{class_abstract_syntax_tree_ad64a53c84906784fcc2b46898453e960}


Root node of the A\+S\+T. 



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
C\+:/\+Users/\+Caio/\+Dropbox/\+Mestrado/agents-\/language/\+Compiladores/\+Compiladores/\hyperlink{_abstract_syntax_tree_8h}{Abstract\+Syntax\+Tree.\+h}\item 
C\+:/\+Users/\+Caio/\+Dropbox/\+Mestrado/agents-\/language/\+Compiladores/\+Compiladores/\hyperlink{_abstract_syntax_tree_8cpp}{Abstract\+Syntax\+Tree.\+cpp}\end{DoxyCompactItemize}
